/**
 * 公共模型
 * Created by lipeng on 16/12/7.
 */
var db_common = require("../common/db");
var mysql = require('mysql');
var DB = {
    //私有属性/方法
    _where:null, //where 查询条件
    _sql:null,//拼装sql
    _bind:[],//预定义绑定参数
    _order:null, //排序条件
    _limit:null, // 分页限制条件
    recursiveWhere:function (where) {

    },
    createNew:function () {
        var db = {};
        db.table_name = null; //数据表名

        db.primaryKey = "id"; //主键
        db.perPage = "15"; //分页 页大小
        db.isTransaction = false; //是否开启事务处理
        db.lastInsertId = null; //最后插入的id
        db.fillable = null; //允许写入的字段
        db.incrementing = true; //主键是否是自增

        db._pool = mysql.createPool(db_common.get_mysql_config);
        db._config = db_common.get_mysql_config;
        db.query = function (sql,params,callback) {
            db._pool.getConnection(function (err,connection) {
                if(err){
                    console.error(err);
                }
                connection.query(sql,params,function (err,result) {
                    if(err){
                            throw err
                        }else {
                            callback(err,result);
                        }
                    connection.release();
                });
            });
        };

        /**
         * where 条件查询
         * @param fields
         */
        db.select = function (fields) {
            if(typeof fields == "undefined"){
                fields = "*";
            }

        };

        /**
         * 设置数据表名
         * @param table_name
         * @returns {{}}
         */
        db.table = function (table_name) {
          db.table_name = table_name;
            return db;
        };

        db.test = function (sql,params) {
          return function (callback) {
              db._pool.getConnection(function (err,connection) {
                  if(err){
                      console.error(err);
                  }
                  connection.query(sql,params,function (err,result) {
                      if(err){
                          throw err
                      }
                      // connection.release();
                      callback(result);
                      connection.release();
                  });
              });
          }
        };

        return db;

    }
};
module.exports = DB;